package com.kotlin

/**
 * 类的构造器写法
 * @author huan.fu
 * @date 2020-03-11 - 11:37
 */
/**
 * age: val或var,则在类内全局可见
 * name: 构造器内可见，init块，属性初始化块可见
 * @JvmOverloads 主构造器默认参数在Java代码中可以以重载的形式调用
 */
class Person01 @JvmOverloads constructor(val arg : Int = 1 , name : String) {
    // init 块最终会合并执行
    init {
        println(name)
    }

    init {
        println(arg)
    }
}

class Person02 {
    var name : String? = null
    var age : Int? = null

    constructor()
    constructor(name : String) : this(name , 0)
    constructor(name : String , age : Int) {
        this.name = name
        this.age = age
        println("$name,$age")
    }
}